home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 Summer - Disc 1 / WN_Ete2010_CD1.iso / Onglet5 / Weezo / Weezo setup.exe / {code_appDir} / www / js / mCommon-src.js < prev    next >
Text File  |  2010-05-19  |  8KB  |  267 lines

  1. var D=document, W=window, rdgnl;
  2. var icoLoad="/themes/mobile/loading.gif",icoGo="/themes/mobile/go.gif",iTmp=new Image();iTmp.src=icoLoad;
  3. function dgi(id){return D.getElementById(id)}
  4.  
  5. function rdgn(elt,obn,t){
  6.     var p;
  7.     var nb;
  8.     for(nb=0;nb<elt.childNodes.length;nb++) {
  9.         p=elt.childNodes[nb];
  10.         if(p.tagName){
  11.             if(t=='name' && p.name==obn) rdgnl[rdgnl.length]=p;
  12.             if(t=='tag' && p.tagName==obn) rdgnl[rdgnl.length]=p;
  13.             if(p.childNodes.length) rdgn(p,obn,t);
  14.         }
  15.     }
  16. }
  17. function dgn(obn,n){
  18.     // IE Mobile WA
  19.     if(!D.getElementsByName) {
  20.         rdgnl=new Array();
  21.         rdgn(D.body,obn,'name');
  22.         if(!rdgnl.length) return;
  23.         if(n=='all') return rdgnl;
  24.         if(n==undefined || isNaN(n)) n=0;
  25.         return rdgnl[n];
  26.     }
  27.     if(!D.getElementsByName(obn).length) return;
  28.  
  29.     if(n=='all') return D.getElementsByName(obn);
  30.     if(n==undefined || isNaN(n)) n=0;
  31.     return D.getElementsByName(obn)[n];
  32. }
  33. function dgtn(obtn,tn){
  34.     if(((tn)?tn:D).getElementsByTagName) return ((tn)?tn:D).getElementsByTagName(obtn);
  35.     rdgnl=new Array();
  36.     rdgn((tn)?tn:D,obtn.toUpperCase(),'tag');
  37.     return rdgnl;
  38. }
  39. function maskShow(m){}
  40. function maskHide(){}
  41.  
  42.  
  43. /************************************************************
  44.  * Asynchronous requests
  45.  ************************************************************/
  46.  
  47. var mcRIP=0;// 1 if an async request is being processed
  48. var rqAbt=0; // 1 if request is being aborted
  49. var mcRM="GET"; // Method used for async request (GET or POST)
  50. var XHR; // Ze object !
  51.  
  52. /**
  53.  * @desc Async send data to server and process response
  54.  * @param d: (string) GET-formated data
  55.  * @param URL: (optional string) URL, if not set, use current URL
  56.  */
  57. function sendData(d,URL,fs) {
  58.     if(mcRIP&&!fs) return false;
  59.     if(!URL) URL=''+D.location;
  60.  
  61.     // Prep d
  62.     if(W.resId) d+="&resId="+resId;
  63.     d+="&asyncRequest=1";
  64.     d=d.replace(/\+/g,"$weezoPlus$");
  65.     if(d.substr(0,1)=='&') d=d.substr(1);
  66.  
  67.     XHR=false;
  68.     if(dgi("ajaxIFrameForm")) XHR=new XMLHttpScriptRequest();
  69.     else if(W.XMLHttpRequest) XHR = new XMLHttpRequest();
  70.     else{
  71.         try {XHR=new ActiveXObject("Msxml2.XMLHTTP");}
  72.         catch(e){
  73.             try{xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");}
  74.             catch (e2){
  75.                 alert("Ajax not supported")
  76.             }
  77.         }
  78.     }
  79.  
  80.     // Open request
  81.     if(mcRM="GET" && d.length<1950) {
  82.         if(URL.indexOf('?')!=-1) XHR.open("GET", URL+'&'+d, true); else XHR.open("GET", URL+'?'+d, true);
  83.     }
  84.     else XHR.open("POST", URL, true);
  85.  
  86.     // Set callback
  87.     XHR.onreadystatechange = function() {
  88.         if(XHR.readyState==4) try{mcReqResp(XHR);}catch(e){} // Try/catch used as W might have been closed when response returns
  89.         return;
  90.     }
  91.     mcRIP=true;
  92.     rqAbt=0;
  93.     // Send request
  94.     if(mcRM=="POST" || d.length>=1950 || dgi("ajaxIFrameForm")) {
  95.         XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  96.         XHR.send(d);
  97.     }
  98.     else XHR.send(null);
  99.     return 1;
  100. }
  101. // Cancel request
  102. function cancelSendData(){rqAbt=1;    XHR.abort();}
  103.  
  104. /**
  105.  * Handle async request completition
  106.  */
  107. function mcReqResp(xhr){
  108.     var gB="";
  109.     mcRIP=false;
  110.  
  111.     // Clear timeout monitor timer
  112.     if(!xhr) return;
  113.     try{xhr.status} catch(e){return;} // FF2 bug WA
  114.  
  115.     // If connection has been aborted with cancelSendData, don't process partial response
  116.     if(rqAbt) return;
  117.  
  118.     // If HTTP response status is not OK
  119.     if(xhr.status!=200) return false;
  120.  
  121.     if(xhr.responseText.length==0) return;
  122.  
  123.     // Process response
  124.     var xmlRoot;
  125.     var action;
  126.     var content;
  127.     if(!xhr.responseXML || (xmlRoot=xhr.responseXML.documentElement)==null){
  128.         if(xhr.responseText.length>1000) return alert(xhr.responseText.substring(0,1000)+'  ...  '+xhr.responseText.substr(xhr.responseText.length-100));
  129.         return alert('XML error: '+xhr.responseText);
  130.     }
  131.     if(W.mcDbg&&mcDbg) alert(xhr.responseText)
  132.  
  133.     // Browse XML response nodes
  134.     for(var i=0;i<xmlRoot.childNodes.length;i++) {
  135.         n=xmlRoot.childNodes[i];
  136.         if(n.nodeType!=1) continue;
  137.         if(n.firstChild) content=n.firstChild.nodeValue; else content='';
  138.         act=n.nodeName;
  139.         // Execute javascript
  140.         if(act=="JSAction") eval(content);
  141.         // Change node(s) innerHTML
  142.         if(act=="innerHTML"){
  143.             // Modify node innerHTML by node id
  144.             ni=n.getAttribute('nodeId');
  145.             if(ni) dgi(ni).innerHTML=((n.getAttribute('add'))?dgi(ni).innerHTML:'')+content;
  146.         }
  147.     }
  148. }
  149.  
  150. // Async submit comForm
  151. function asyncSubmit(fs){
  152.     var dcf=D.comForm;
  153.     data="";
  154.     for(var i=1;i<6;i++) if(dcf['data'+i].value.length>0) data+=((i>1)?'&':'')+"data"+i+"="+encodeURIComponent(dcf['data'+i].value);
  155.     return sendData(data,dcf.action);
  156. }
  157. function fas(a,b,c,d,e){fillAndSubmit(a,b,c,d,e)}
  158.  
  159. // Async submit a form
  160. function asyncSubmitForm(formId,fs){
  161.     if(!dgi(formId)) return false;
  162.     var frm=dgi(formId);
  163.     var elt;
  164.     data='';
  165.  
  166.     var inp=dgtn("input",frm);
  167.     for(var o=0;o<inp.length;o++) {
  168.         elt=inp[o];
  169.         if(elt.name.length){
  170.             if((elt.type!='radio' && elt.type!='checkbox') || elt.checked){
  171.                 if(data.length>0) data+='&';
  172.                 data+=elt.name+'='+encodeURIComponent(elt.value);
  173.             }
  174.         }
  175.     }
  176.     inp=dgtn("select",frm);
  177.     for(var o=0;o<inp.length;o++) {
  178.         elt=inp[o];
  179.         if(data.length>0) data+='&';
  180.         data+=elt.name+'='+encodeURIComponent(elt.value);
  181.  
  182.     }
  183.     return sendData(data,frm.action,fs);
  184. }
  185.  
  186. // Alternative to XMLHttpRequest
  187. function XMLHttpScriptRequest(){this.action=false;}
  188. XMLHttpScriptRequest.prototype.open = function(reqMethod, action){this.action=action;}
  189. XMLHttpScriptRequest.prototype.setRequestHeader = function(){}
  190. XMLHttpScriptRequest.prototype.send = function(data){
  191.     dgi("ajaxIFrameForm").action=this.action;
  192.     dgn("XMLHttpScriptRequest").value=data+'&XMLHttpScriptRequest='+Math.random();
  193.     dgi("ajaxIFrameForm").submit()
  194.     return;
  195. }
  196. function asEval(js){eval(js)}; // PSP workaround as parent.eval doesn't work
  197.  
  198. // Ping server
  199. function ping(r) {sendData('rnd='+Math.random(), '/ping.php', true);if(r) setTimeout('ping('+r+')',r)}
  200.  
  201.  
  202. /*********************************************************************************************
  203.  * mwl NAMESPACE
  204.  *********************************************************************************************/
  205. function mwJSLib(){
  206.     this.liSel=function(n){
  207.         if(typeof n=='string') n=dgi(n);
  208.         if(!n) return;
  209.         if(n.tagName=='TR') n.className='liSel';
  210.         if(n.tagName=='TD') n.parentNode.className='liSel';
  211.         if(n.className=='sli') n.className='sliSel';
  212.         if(n.className=='frame2') n.className='frame2Sel';
  213.         if(n.className=='bt') n.className='btSel';
  214.         try{n.childNodes[2].childNodes[0].src=icoLoad} catch(e){}
  215.         // activate prev page auto unselect (usefull when coming back from a video)
  216.         if(!this.liMonI) this.liMonI=setInterval('mwl.liMon()',400);
  217.     }
  218.     this.liUnsel=function(n){
  219.         if(typeof n=='string') n=dgi(n);
  220.         if(n.tagName=='TR') n.className='li';
  221.         if(n.tagName=='TD') n.parentNode.className='li';
  222.         if(n.className=='sliSel') n.className='sli';
  223.         if(n.className=='frame2Sel') n.className='frame2';
  224.         if(n.className=='btSel') n.className='bt';
  225.         try{n.childNodes[2].childNodes[0].src=icoGo} catch(e){}
  226.     }
  227.     this.liUnselAll=function(){
  228.         var e,el=D.getElementsByTagName('TR');
  229.         for(e in el) if(el[e] && el[e].className=='liSel') mwl.liUnsel(el[e]);
  230.     }
  231.     this.liBlink=function (n){
  232.         if(!n) return;
  233.         mwl.liSel(n);
  234.         if(!n.id) n.id='B'+Math.random();
  235.         setTimeout('mwl.liUnsel("'+n.id+'")',500);
  236.     }
  237.  
  238.     this.liMonTS=(new Date()).getTime();
  239.     this.liMon=function(){
  240.         var p=mwl.liMonTS;
  241.         mwl.liMonTS=(new Date()).getTime();
  242.         if(mwl.liMonTS-p>2000) mwl.liUnselAll();
  243.     }
  244.  
  245.     this.liGrSel=function(n){
  246.         elts=document.getElementsByTagName(n.tagName);
  247.         nn=n.getAttribute("name")
  248.  
  249.         for(i=0;i<elts.length;i++) {
  250.             elt=elts[i];
  251.             try{
  252.                 en=elt.getAttribute("name")
  253.                 if(en==nn){
  254.                     if(elt==n) this.liSel(n); else this.liUnsel(elt);
  255.                 }
  256.             }
  257.             catch(e){}
  258.         }
  259.     }
  260.     this.toMenu=function(){D.location='/index.php';}
  261.     this.TCHide=function(){dgi('winBar').style.display='none'}
  262.     this.TCShow=function(){dgi('winBar').style.display=''}
  263.     this.TCToggle=function(){with(dgi('winBar').style) {display=(display=='')?'none':''}}
  264. }
  265.  
  266. var mwl=new mwJSLib();
  267. function us(nn){if(dgi(nn)) mwl.liUnsel(dgi(nn))}